package com.javarush.test.level18.lesson10.bonus03;

/* Прайсы 2
CrUD для таблицы внутри файла
Считать с консоли имя файла для операций CrUD
Программа запускается с одним из следующих наборов параметров:
-u id productName price quantity
-d id
Значения параметров:
где id - 8 символов
productName - название товара, 30 chars (60 bytes)
price - цена, 8 символов
quantity - количество, 4 символа
-u  - обновляет данные товара с заданным id
-d  - производит физическое удаление товара с заданным id (все данные, которые относятся к переданному id)

В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины

Пример:
19846   Шорты пляжные синие           159.00  12
198478  Шорты пляжные черные с рисунко173.00  17
19847983Куртка для сноубордистов, разм10173.991234
*/

import java.io.*;
import java.util.ArrayList;

public class Solution {
    public static void main(String[] args) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String file = null;
        try {
            file = reader.readLine();
            reader.close();
        } catch (IOException e) {

        }

        if (args[0].isEmpty()) return;
        if (args[0].equals("-u")) {

            ArrayList<String> n = new ArrayList<String>();
            BufferedReader fileRead = null;
            try {
                fileRead = new BufferedReader(new FileReader(file));
                String s = "";
                while ((s = fileRead.readLine()) != null) {
                    n.add(s);
                }
            } catch (IOException e) {
            }

            String ar=args[1];
            if(args[1].length()<8) {
                for (int i = args[1].length(); i < 8; i++) {
                    ar = ar + " ";
                }
            }

            for (int j = 0; j < n.size(); j++) {
                if (ar.equals(n.get(j).substring(0, 8))) {

                    Integer id = Integer.parseInt(args[1]);
                    String write = "";
                    int leng;
                    write = write + id;
                    if ((leng = String.valueOf(id).length()) < 8) {
                        for (int i = leng; i < 8; i++) {
                            write = write + " ";
                        }
                    }

                    String name = "";
                    for (int i = 2; i < args.length - 2; i++) {
                        if (i == args.length - 3) {
                            name = name + args[i];
                            continue;
                        }
                        name = name + args[i] + " ";
                    }
                    if (name.length() > 30) return;

                    write = write + name;
                    if ((leng = name.length()) < 30) {
                        for (int i = leng; i < 30; i++) {
                            write = write + " ";
                        }
                    }

                    if (args[args.length - 2].length() > 8) return;
                    write = write + args[args.length - 2];
                    if ((leng = args[args.length - 2].length()) < 8) {
                        for (int i = leng; i < 8; i++) {
                            write = write + " ";
                        }
                    }

                    if (args[args.length - 1].length() > 4) return;
                    write = write + args[args.length - 1];
                    if ((leng = args[args.length - 1].length()) < 4) {
                        for (int i = leng; i < 4; i++) {
                            write = write + " ";
                        }

                    }
                    n.set(j, write);


                    BufferedWriter bufferedWriter = null;
                    try {
                        bufferedWriter = new BufferedWriter(new FileWriter(file));

                        for (String x : n) {
                            bufferedWriter.write(x);
                            bufferedWriter.newLine();
                        }
                        bufferedWriter.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }




        else if (args[0].equals("-d")) {
            ArrayList<String> n = new ArrayList<String>();
            BufferedReader fileRead = null;
            try {
                fileRead = new BufferedReader(new FileReader(file));
                String s = "";
                while ((s = fileRead.readLine()) != null) {
                    n.add(s);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            String ar=args[1];
            if(args[1].length()<8) {
                for (int i = args[1].length(); i < 8; i++) {
                    ar = ar + " ";
                }
            }


            for (int i = 0; i < n.size(); i++) {

                if (ar.equals(n.get(i).substring(0, 8))) n.remove(i);
            }

            BufferedWriter bufferedWriter = null;
            try {
                bufferedWriter = new BufferedWriter(new FileWriter(file));

                for (String x : n) {
                    bufferedWriter.write(x);
                    bufferedWriter.newLine();
                }
                bufferedWriter.close();
            } catch (IOException e) {
            }


        } else return;

    }

}